A system administrator or developer in a data processing system may often be required to execute a large list of tasks or processes. The easiest way to schedule the list of tasks is to run them sequentially. However, sequential execution of each task may not fully utilize the system's resources and may increase the completion time for all the tasks to execute. An alternative to sequential execution is to execute each task in parallel with the other tasks. Although, running the tasks in parallel may be more efficient, it may also be more complicated due to dependencies that exist between the various tasks in the list. For example, some tasks may temporarily change the topology of the system in such a way that other tasks running in parallel may fail. Other tasks may depend upon the output or changes made to data generated by previously executed tasks in the list. However, certain tasks may not complete or fail thereby preventing subsequent dependent tasks from being executed. Yet other tasks may have dependencies on instructions from other tasks being executed in a particular order.